#ifndef __MYSTDIO_H__
#define __MYSTDIO_H__

#define FLUSH_NONE 1  //无缓冲，立即刷新
#define FLUSH_LINE 2  //行刷新
#define FLUSH_FULL 4  //全刷新

#define SIZE 4096
#define UMASK 0666

//刷新策略
#define FORCE 1
#define NORMAL 0

typedef struct _MY_IO_FILE
{
    int fileno;            //文件描述符
    int flag;              //文件刷新方式
    char outbuffer[SIZE];  //缓冲区
    int curr;              //缓冲区有效数据个数，也是最后一个元素下一个位置的下标
    int cap;               //缓冲区容量
}MYFILE;

MYFILE* my_fopen(const char *filename, const char *mode);
void my_fclose(MYFILE* fp);
int my_fwrite(const char *s, int size, MYFILE* fp);
void my_fflush(MYFILE* fp); 

#endif
